package com.szpx.controller.XWYController;

import com.szpx.entity.XWY.XWYDenglu;
import com.szpx.service.XWYDengluService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;

/**
 * XWY页面控制器 - 处理登录、注册等页面跳转和表单提交
 */
@Controller
@RequestMapping("/xwy")
@CrossOrigin(origins = "*", maxAge = 3600)
public class XWYPageController {

    /**
     * 跳转到登录页面
     */
    @GetMapping("/denglu")
    public String loginPage() {
        return "XWY/denglu";
    }

    /**
     * 跳转到退出登录页面
     */
    @GetMapping("/tcdl")
    public String logoutPage() {
        return "XWY/tcdl";
    }

    /**
     * 跳转到注册页面
     */
    @GetMapping("/zhuce")
    public String registerPage() {
        return "XWY/zhuce";
    }


    @Autowired
    private XWYDengluService xwyDengluService;

    /**
     * 用户登录
     * @param account 用户名或手机号
     * @param password 密码
     * @param role 用户角色（可选）
     * @return 登录结果
     */
    @PostMapping("/denglu")
    @ResponseBody
    public Map<String, Object> login(@RequestParam(value = "account") String account,
                                   @RequestParam String password,
                                   @RequestParam(required = false) String role) {
        Map<String, Object> result = new HashMap<>();
        
        try {
            XWYDenglu user = null;
            
            // 如果提供了角色且账号是手机号格式，使用带角色的登录方法
            if (role != null && !role.isEmpty() && account.matches("^1[3-9]\\d{9}$")) {
                user = xwyDengluService.loginWithRole(account, password, role);
                if (user == null) {
                    result.put("success", false);
                    result.put("message", "手机号、密码或角色错误");
                    return result;
                }
            } else {
                // 否则使用普通登录方法
                user = xwyDengluService.login(account, password);
                if (user != null && role != null && !role.isEmpty() && !role.equals(user.getRole())) {
                    result.put("success", false);
                    result.put("message", "用户角色不匹配");
                    return result;
                }
            }
            
            if (user != null) {
                result.put("success", true);
                result.put("message", "登录成功");
                result.put("data", user);
                result.put("role", user.getRole());
                
                // 设置角色对应的重定向URL
                String redirectUrl = "";
                switch (user.getRole()) {
                    case "admin":
                        redirectUrl = "/zrz/guanliyuanXXLayui";
                        break;
                    case "coach":
                        redirectUrl = "/ljk/coach/index";
                        break;
                    default:
                        // 所有其他用户都重定向到普通用户页面
                        redirectUrl = "/zrz/daohanglanLayui";
                        break;
                }
                result.put("redirectUrl", redirectUrl);
            } else {
                result.put("success", false);
                result.put("message", "账号或密码错误");
            }
        } catch (Exception e) {
            result.put("success", false);
            result.put("message", "登录失败：" + e.getMessage());
        }
        
        return result;
    }

    // 注册相关的端点已移至 XWYZhuceController
    // 包括：
    // - /xwy/register/check-username
    // - /xwy/register/check-phone
    // - /xwy/register/submit
    // - /xwy/zhuce (POST) - 已移除，使用 /xwy/register/submit 替代
}